dist: xenial
language: cpp

cache:
  - ccache: true

os:
  - linux
  - osx
  - windows

compiler:
  - gcc
  - clang
  - msvc

env:
  - EASTL_CONFIG=Debug
  - EASTL_CONFIG=Release

addons:
  apt:
    update: true
    sources:
      - george-edison55-precise-backports
      - sourceline: 'ppa:ubuntu-toolchain-r/test'
      - sourceline: 'deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-11 main'
        key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
    packages:
      - cmake
      - cmake-data
      - g++-9
      - clang-11

matrix:
    include:
        - compiler: clang "release build with clang to trigger MOJI check"
          env: EASTL_CONFIG=Release USE_MOJI_CHECK=yes
          os: linux
        - compiler: msvc
          env: EASTL_CONFIG=Release CXXFLAGS="/std:c++latest /Zc:char8_t"
          os: windows 

    exclude:
      - os: osx
        compiler: gcc
      - os: osx
        compiler: msvc
      - os: linux 
        compiler: msvc
      - os: windows
        compiler: clang
      - os: windows
        compiler: gcc

# Handle git submodules yourself
git:
    submodules: false

before_install:
  - git submodule update --init 
  - if [[ "$CXX" == "g++" ]]; then export CC="gcc-9"                                                                    ;fi
  - if [[ "$CXX" == "g++" ]]; then export CXX="g++-9"                                                                   ;fi
  - if [[ "$CXX" == "clang++" && "${TRAVIS_OS_NAME}" != "osx" ]]; then export CC="clang-11"                             ;fi
  - if [[ "$CXX" == "clang++" && "${TRAVIS_OS_NAME}" != "osx" ]]; then export CXX="clang++-11"                          ;fi
  - if [[ "$CXX" == "g++-9" && "${TRAVIS_OS_NAME}" != "windows" ]]; then g++-9 -v                                       ;fi
  - if [[ "$CXX" == "clang++-11" && "${TRAVIS_OS_NAME}" != "windows" ]]; then clang++-11 -v                             ;fi

install:
# MOJI check; exit 1 if non-ascii characters detected in C++
  - if [[ -n "$USE_MOJI_CHECK" && -n `git grep -P "[^[:ascii:]]" source test` ]]; then echo "Moji Detected" && exit 1   ;fi
  - if [[ -n "$USE_MOJI_CHECK" ]]; then exit 0                                                                          ;fi

before_script:
  - mkdir build_$EASTL_CONFIG
  - cd build_$EASTL_CONFIG
  - cmake .. -DEASTL_BUILD_BENCHMARK:BOOL=ON -DEASTL_BUILD_TESTS:BOOL=ON
  - cmake --build . --config $EASTL_CONFIG

script:
  # Run Tests
  - cd $TRAVIS_BUILD_DIR/build_$EASTL_CONFIG/test
  - ctest -C $EASTL_CONFIG -V || exit 1

  # Run Benchmarks
  - cd $TRAVIS_BUILD_DIR/build_$EASTL_CONFIG/benchmark
  - ctest -C $EASTL_CONFIG -V || exit 1

